home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
PROGMISC
/
SUPER135.LZH
/
CB.PRG
next >
Wrap
Text File
|
1989-03-25
|
14KB
|
474 lines
external helpmod
set key -30 to helpmod
initcol()
*--- change to '*.NTX' if applicable
defindex = '*.NDX'
*---
setcolor(C_normcol)
NC = standard()
ini_cap = keybd(2)
CAPSLOCK(.T.)
xplode = .t.
SET CONFIRM OFF
SET BELL OFF
SET SAFETY OFF
SET WRAP ON
SET SCOREBOARD OFF
SET TYPEAHEAD TO 100
save screen to pre_cart
isfopen = .f.
q_ed_ok = .t.
STORE '' TO cb_dbfname,cb_ndxstr,cb_ndxost,query_exp
STORE 0 TO cb_recno,cb_size ,CB_IDXCT
cb_order = 1
private cb_dbfs[100]
private cb_flds[100]
private cb_ndxs[ADIR(defindex)]
private cb_acndx[6]
paint_cb()
filton = .f.
*- MENUS
LASTMENU = 4
TITLES = "FILES:DATA:ENVIRONMENT:QUIT"
CHOICES1 = "8:Select DBF:Pick Index(s):Modify Structure:Create Structure:Index Order:New Index:Form Letters:List Text File"
CHOICES2 = "8:Build Query:Replace Fields:Print Lists:Tabular Edit:Vertical Edit:Hunt Duplicates:Create Labels:Sum/Average Field"
choices3 = "2:Set Colors:Change Directory"
choices4 = "1:Quit"
cb_sel = 1.1
*-
DO WHILE .T.
SAYQUERY()
SCROLL(21,1,23,78,0)
IF ISFOPEN
N_RECS =IIF(!EMPTY(CB_DBFNAME),' Containing '+STR(RECC())+' RECORDS','')
@21,03 say "DBF Open - "+cb_dbfname+N_RECS
IF !EMPTY(CB_NDXSTR)
@22,03 say "Indices Open - "+cb_ndxstr
@23,03 say "Controlling Index - "+cb_acndx[cb_order]
ENDIF
ENDIF
CB_SEL = PULLIT(CB_SEL,TITLES,choices1,choices2,choices3,choices4)
if cb_sel = 0
CB_SEL = 4.1
endif
do case
case cb_sel = 1.1
if adir('*.dbf') > 0
cb_pickdbf()
else
msg("No DBFs detected in this directory")
endif
case cb_sel =1.2 .and. isfopen
if adir(defindex) > 0
cb_picknd()
endif
case cb_sel = 1.3 .or. cb_sel = 1.4
if messyn("Datafiles will be closed while in create/modify routines","Continue","Quit",10,10)
if cb_sel = 1.3
if adir('*.dbf') > 0
modiS("M")
close data
isfopen = .f.
else
msg("No DBFs detected in this directory")
endif
elseif cb_sel = 1.4
MODIS("C")
close data
isfopen = .f.
endif
endif
case cb_sel = 1.5 .and. isfopen .AND. !EMPTY(CB_NDXSTR)
cb_contin()
case cb_sel = 1.6 .and. isfopen
cb_maketi()
case cb_sel = 1.7 .and. isfopen
formletr()
case cb_sel = 1.8 && list text file
cb_listf()
CASE int(cb_sel) = 2 .and. !isfopen
MSG('A DBF must be open for the options','on this menu to be available')
case cb_sel = 2.1
query_exp = query()
case cb_sel = 2.2
GLOBREP()
case cb_sel = 2.3
tquery= prntlst(query_exp)
query_exp = tquery
case cb_sel = 2.4
editdb(.t.)
case cb_sel = 2.5
external FASTFORM,QUERY,PRNTLST,EDITDB,DUPLOOK,CLABEL
private do1[7],do2[7]
do1[1]= "Build Query"
do1[2]= "Print Lists"
do1[3]= "Tabular Edit "
do1[4]= "Hunt Duplicates"
do1[5]= "Create Labels "
do1[6]= "Fast Form Letter"
do1[7]= "Quit"
do2[1]= "Query"
do2[2]= "PRNTLST"
do2[3]= "EDITDB"
do2[4]= "DUPLOOK"
do2[5]= "CLABEL"
do2[6]= "FASTFORM"
do2[7]= " "
doITALL(do1,do2)
case cb_sel = 2.6
duplook()
case cb_sel = 2.7
clabel()
case cb_sel = 2.8 && sum/AVERAGE
IF MESSYN("Sum or Average?","Sum","Average")
sum_ave()
else
sum_ave("AVE")
endif
case cb_sel = 3.1
setcolors()
set color to (c_normcol)
paint_cb()
case cb_sel = 3.2 && dir
if new_dir()
close data
isfopen = .f.
query_exp=''
paint_cb()
endif
case cb_sel = 4.1
IF MESSYN('Are you done ?',10,10)
SET CURSOR ON
if !ini_cap
capsloff()
endif
restore screen from pre_cart
return
endif
endcase
enddo
***********************************************************
function cb_pickdbf
dbfpick = popex('*.dbf')
if !empty(dbfpick)
use &DBFPICK
IF EMPTY(ALIAS())
MSG("UNABLE TO OPEN DATABASE - POSSIBLY CORRUPT OR .DBT FILE MISSING ")
RETURN ''
ENDIF
isfopen = .t.
QUERY_EXP = ''
cb_dbfname = dbfpick
cb_size = fcount()
PUBLIC cb_flds[fcount()]
afields(cb_flds)
FOR DE = 1 TO 6
ADEL(cb_acndx,DE)
NEXT
CB_NDXSTR=''
endif
return ''
*******************************************************************
function cb_picknd
declare cb_ndxs[ADIR(defindex)]
FOR DE = 1 TO 6
ADEL(cb_acndx,DE)
NEXT
ADIR(defindex,CB_NDXS)
pick_ndx() && get a list of active indices into cb_acndx
cb_openem()
return ''
*****************************************************************************
function cb_contin
private old_o
old_o = cb_order
cb_order = mchoice('cb_acndx',10,10,20,50)
if cb_order = 0
cb_order = old_o
else
set order to (cb_order)
endif
return ''
*****************************************************************************
function cb_maketi && make temp ndx
private newstr
MAKEWIND('arr',4,7,18,47)
makewind('show',20,7,23,78)
@4,8 say "[ Select field(s) to index on ]"
@18,8 say "[ Escape when done ]"
@20,8 say "[ Index key expression ]"
cb_el = 1
cb_makei = ''
newstr = ''
DO WHILE .T.
@21,8 say subst(cb_makei,1,50)
@21,8 say subst(cb_makei,50,100)
retstr = ACHOICE(5,8,17,36,cb_FLDS,'','',cb_el)
cb_el = retstr
IF retstr = 0
EXIT
ENDI
c_fld = cb_flds[cb_el]
cb_type = type(c_fld)
do case
case cb_type = 'C'
newstr = c_fld
case cb_type = 'D'
newstr = 'dtos('+c_fld+')'
case cb_type = 'N'
newstr = 'nbr2str('+c_fld+')'
case cb_type = 'L'
newstr = 'iif('+c_fld+',"T","F")'
case cb_type = 'M'
newstr = ''
endcase
if !empty(newstr)
cb_makei = cb_makei+newstr+'+'
endif
ENDD
if !empty(newstr)
if messyn("Create this index now ? ",10,10)
cb_makei= left(cb_makei,len(cb_makei)-1) && get rid of last '+'
inname = space(12)
do while .t.
one_read("Name of index: ["+defindex+"] ",'inname','@!')
IF !(right(defindex,4) $ INNAME)
MSG('USE FORMAT : ['+defindex+']')
LOOP
ENDIF
if file(inname)
if messyn("That index exists - overwrite ?")
exit
endif
elseif empty(inname)
if messyn("You've left the name blank - abort ?")
exit
endif
else
exit
endif
enddo
if !empty(inname)
plswait(.t.)
index on &cb_makei to &inname
plswait(.f.)
AINS(cb_acndx,1)
CB_ACNDX[1] = ALLTRIM(INNAME)
cb_openem()
cb_order = 1
endif
endif
endif
killwind('show',20,7,23,78)
KILLWIND('arr',4,7,18,47)
************************************************************************
function cb_openem
cb_ndxstr = ''
KNT = ALENGTH(CB_ACNDX)
FOR ID = 1 TO KNT
IDS = STR(ID,1)
IF TYPE('CB_ACNDX[ID]') ='C'
ID&IDS = CB_ACNDX[ID]
CB_NDXSTR = CB_NDXSTR+CB_ACNDX[ID]+','
ENDIF
NEXT
CB_IDXCT = KNT
CB_ORDER = KNT
do case
case KNT = 6
set index to &id1,&id2,&id3,&id4,&id5,&id6
case KNT = 5
set index to &id1,&id2,&id3,&id4,&id5
case KNT = 4
set index to &id1,&id2,&id3,&id4
case KNT = 3
set index to &id1,&id2,&id3
case KNT = 2
set index to &id1,&id2
case KNT = 1
set index to &id1
endcase
return ''
******************************************************************************
FUNCTION CB_RFLD && REPLACE SELECTED FIELDS
MAKEWIND('RFLD',10,10,20,50,C_POPcol)
cb_repf = ''
do while .t.
@11,12 SAY IIF(EMPTY(query_exp),"No Query Active","Query Active")
@13,12 prompt "Select Field to Replace"+' '+cb_repf+space(5)
@14,12 prompt "Replace Selected Field"+' '+cb_repf+space(5)
@15,12 prompt "Quit"
menu to rep_what
do case
case rep_what = 1
cb_repp = mchoice('cb_flds',12,12,22,25)
if cb_repp > 0
cb_repf = cb_flds[cb_repp]
endif
case rep_what = 2 .and. !empty(cb_repf)
len_var = 0
typ_var = ""
mvar = cb_mvar(cb_repf)
if !empty(typ_var)
SAVE SCREEN TO PRE_GET
bot = max( 45, min(78,len_var+5) )
makewind('repv',5,5,8,bot)
SET CONFIRM ON
@6,7 say "Replace "+cb_repf+" with what value : "
@7,7 get mvar
read
SET CONFIRM OFF
RESTORE SCREEN FROM PRE_GET
killwind('repv',5,5,8,bot)
endif
CB_USEQ = .F.
if !empty(query_exp)
cb_useq = messyn("Replace for Query Condition ? ",10,10)
endif
if messyn("Execute Replace ? ",10,10)
if !empty(query_exp) .and. cb_useq
replace all &cb_repf with mvar for &query_exp
else
replace all &cb_repf with mvar
endif
endif
case rep_what = 3 .or. rep_what = 0
exit
endcase
enddo
KILLWIND('RFLD',10,10,20,50,C_POPcol)
******************************************************************************
function cb_mvar
para nameofld
DO CASE
CASE type(nameofld) = "C"
ret_var = SPACE(len(&nameofld))
len_var = len(&nameofld)
typ_var = "C"
CASE type(nameofld) = "N"
ret_var = 0
len_var = len(str(&nameofld))
typ_var = "N"
CASE type(nameofld) = "D"
ret_var =ctod(' / / ')
len_var = 8
typ_var = "D"
CASE type(nameofld) = "L"
ret_var = SPACE(1)
len_var = 1
typ_var = "L"
ENDCASE
return ret_var
******************************************************************************
******************************************************************************
function nbr2str
para nbr
rnbr = STR(1000000+NBR)
return rnbr
******************************************************************************
function pick_ndx
MAKEWIND('w_arr',1,20,17,50,C_NORMCOL)
private tempid[adir(defindex)]
ACOPY(cb_ndxs,tempid)
@1,22 say "[Select/Deselect Indices]"
@17,22 say "[Press ESC when done ]"
nextndx= 1
PR_EL = 1
DO WHILE .T.
pr_el = ACHOICE(2,21,16,49,tempid,'','',pr_el)
IF pr_el = 0
EXIT
ENDI
if left(tempid[pr_el],2)<>" "
n_name = cb_ndxs[pr_el]
key = ALLTRIM(nkey(n_name))
if testcond(key,"C") && see if the index key will evaluate w/out
&& errors in the current environment
tempid[pr_el] = ' '+tempid[pr_el]
cb_acndx[nextNDX] = cb_ndxs[pr_el]
nextndx = nextndx+ 1
else
msg("That index either does not match the DBF","or this program does not support a function","in the index expression")
msg("For your info, the index expression is:",key)
endif
ELSE
tempid[pr_el] = subst(tempid[pr_el],3)
takeout = ascan(cb_acndx,tempid[pr_el])
adel(cb_acndx,takeout)
nextndx= nextndx- 1
ENDIF
ENDDO
KILLWIND('w_arr',1,20,17,50)
return ''
******************************************************************************
function paint_cb
CLS()
BXX(1,0,24,79)
BXX(16,00,20,79)
bXx(20,00,24,79)
ATT(2,1,15,78,STANDARD(),CHR(177))
@16,0 say '├'
@20,0 say '├'
@16,79 say '┤'
@20,79 say '┤'
@20,70 say '─'
@20,2 say '[Datafile]'
@16,2 say '[Query]'
@24,2 say '[Drive and Directory '+curdir()+']'
BXX(8,20,11,59)
@09,22 say "D A T A F I L E H A N D L E R"
@10,34 say "VERSION 2.0"
SCROLL(0,1,0,78,0)
return ''
FUNCTION SAYQUERY
SCROLL(17,1,19,78,0)
@17,3 say SUBST(QUERY_EXP,1,70)
@18,3 say SUBST(QUERY_EXP,71,70)
@19,3 say SUBST(QUERY_EXP,141,70)
RETURN ''
Function cb_listf
private lstf
lstf = space(12)
one_read("File to list (ENTER or *Wildcards for picklist - ESC to exit)","lstf","")
if lastkey() = 27
return ''
endif
if empty(lstf) .or. at('*',lstf) > 0
if empty(lstf)
lstf = "*.*"
endif
lstf = popex(lstf)
endif
if lastkey() = 27
return ''
endif
if file(lstf)
fileread(1,1,23,79,lstf)
endif